ডায়নামিক অ্যারে হলো এমন একটি অ্যারে, যার আকার প্রোগ্রাম চলাকালীন সময়ে নির্ধারণ করা যায় এবং প্রয়োজন অনুসারে অ্যারের আকার পরিবর্তন করা যায়। C++ এ ডায়নামিক অ্যারে তৈরি করার জন্য new এবং delete অপারেটর ব্যবহার করা হয়।
C++ এ new
অপারেটর ব্যবহার করে ডায়নামিক অ্যারে তৈরি করা যায়, এবং delete[]
অপারেটর দিয়ে ডায়নামিক অ্যারেটি মেমোরি থেকে মুক্ত করা যায়।
#include <iostream>
using namespace std;
int main() {
int size;
cout << "Enter array size: ";
cin >> size;
// ডায়নামিক অ্যারে তৈরি
int *arr = new int[size];
// অ্যারের জন্য মান ইনপুট নেওয়া
cout << "Enter " << size << " elements: ";
for (int i = 0; i < size; i++) {
cin >> arr[i];
}
// অ্যারে প্রিন্ট করা
cout << "Array elements are: ";
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
// মেমোরি মুক্ত করা
delete[] arr;
return 0;
}
বর্ণনা:
size
নামে একটি ভ্যারিয়েবলের মাধ্যমে অ্যারের আকার ইনপুট নেওয়া হয়েছে।new int[size]
দিয়ে একটি ডায়নামিক অ্যারে তৈরি করা হয়েছে, যেখানে size
আকারের অ্যারের জন্য মেমোরি বরাদ্দ করা হয়েছে।delete[] arr;
দিয়ে অ্যারেটির মেমোরি মুক্ত করা হয়েছে।C++ এ ডায়নামিক্যালি বরাদ্দকৃত অ্যারের আকার সরাসরি পরিবর্তন করা সম্ভব নয়। তবে নতুন আকারের জন্য একটি নতুন ডায়নামিক অ্যারে তৈরি করে পুরনো অ্যারেটির মানগুলো নতুন অ্যারেতে কপি করা যায় এবং পুরনো অ্যারে মেমোরি থেকে মুক্ত করা যায়।
#include <iostream>
using namespace std;
int main() {
int size = 3;
int *arr = new int[size];
// প্রাথমিক মান ইনপুট নেওয়া
cout << "Enter 3 elements: ";
for (int i = 0; i < size; i++) {
cin >> arr[i];
}
// নতুন আকারের জন্য একটি বড় অ্যারে তৈরি করা
int newSize = 5;
int *newArr = new int[newSize];
// পুরনো অ্যারের মান নতুন অ্যারেতে কপি করা
for (int i = 0; i < size; i++) {
newArr[i] = arr[i];
}
// নতুন উপাদান যোগ করা
newArr[3] = 40;
newArr[4] = 50;
// পুরনো অ্যারেটির মেমোরি মুক্ত করা
delete[] arr;
// নতুন অ্যারের মান প্রিন্ট করা
cout << "Resized array elements are: ";
for (int i = 0; i < newSize; i++) {
cout << newArr[i] << " ";
}
cout << endl;
// নতুন অ্যারেটির মেমোরি মুক্ত করা
delete[] newArr;
return 0;
}
বর্ণনা:
size = 3
আকারের একটি ডায়নামিক অ্যারে arr
তৈরি করা হয়েছে এবং প্রাথমিক মান ইনপুট নেওয়া হয়েছে।newSize = 5
আকারের একটি নতুন অ্যারে newArr
তৈরি করা হয়েছে এবং arr
এর মানগুলো newArr
এ কপি করা হয়েছে।arr
মেমোরি থেকে মুক্ত করা হয়েছে, এবং newArr
এর নতুন আকারে মানগুলো প্রিন্ট করা হয়েছে।delete[]
অপারেটর ব্যবহার করে সেই মেমোরি মুক্ত করতে হবে, যাতে মেমোরি লিক না হয়।nullptr
বা NULL
দিয়ে সেট করা উচিৎ।C++11 এ স্মার্ট পয়েন্টার ব্যবহার করে ডায়নামিক অ্যারে তৈরি করলে মেমোরি ম্যানেজমেন্ট আরও সহজ হয় এবং মেমোরি লিক এড়ানো যায়। unique_ptr
স্মার্ট পয়েন্টার ব্যবহার করে ডায়নামিক অ্যারে তৈরি করার একটি উদাহরণ নিচে দেওয়া হলো।
#include <iostream>
#include <memory>
using namespace std;
int main() {
int size = 5;
unique_ptr<int[]> arr(new int[size]); // unique_ptr ব্যবহার করে ডায়নামিক অ্যারে
// মান ইনপুট নেওয়া
cout << "Enter 5 elements: ";
for (int i = 0; i < size; i++) {
cin >> arr[i];
}
// মান প্রিন্ট করা
cout << "Array elements are: ";
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0; // unique_ptr এর মেমোরি স্বয়ংক্রিয়ভাবে মুক্ত হয়
}
বর্ণনা:
unique_ptr<int[]>
ব্যবহার করে ডায়নামিক অ্যারে তৈরি করা হয়েছে।unique_ptr
ব্যবহারের ফলে প্রোগ্রাম শেষে মেমোরি স্বয়ংক্রিয়ভাবে মুক্ত হয়ে যায়।new
এবং delete[]
অপারেটর ব্যবহার করে ডায়নামিক অ্যারে তৈরি ও মুক্ত করা হয়।ডায়নামিক অ্যারে মেমোরি ব্যবহারে আরও নিয়ন্ত্রণ প্রদান করে এবং প্রোগ্রামে আরও নমনীয়তা ও কার্যকারিতা যোগ করে।
common.read_more